package zhupf.test.designPattern.singleton;

/**
 * 单例模式：第四种 （懒汉式，线程安全）
 * 优点：懒加载模式，线程安全
 * 缺点：使用synchronized 同步锁 ，锁的力度比较大，并发性能低
 *
 * 实际开发中不使用，效率太低
 */
public class SingletonTest05 {
    public static void main(String[] args) {
        for (int i = 0 ;i<10;i++){
            new Thread(()->{
                System.out.println(Singleton05.getInstance());
            },String.valueOf(i)).start();
        }
    }
}

/**
 *  私有化构造
 *  对外提供公共方法
 *  对 对外提供获取实例方法进行加锁
 */
class Singleton05{
    private static Singleton05 instance;

    private Singleton05(){

    }

    public static  Singleton05 getInstance(){
        if(instance == null){
            synchronized(Singleton05.class){
                instance =  new Singleton05();
            }
        }
        return instance;
    }
}
